package com.theaf.core.utils;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 * 日期工具类
 * @author songwenke
 * @date 2017-11-17
 *
 */
public class DateUtils {

	public static String YYYYMMDDHHMMSS="yyyy-MM-dd HH:mm:ss";
	public static String YYYYMMDD="yyyy-MM-dd";

	/**
	 * 获取当前时间
	 * @return
	 */
	public static Date getCurrentDate()
	{
		return new Date();
		
	}

	/**
	 * 获取当前日期
	 * @return
	 */
	public static String getCurrentDateStr()
	{
		return convertDateToStr(new Date(), YYYYMMDD);
		
	}

	/**
	 * 时间格式化，由DATE转字符串
	 * @param date 时间
	 * @param type 格式
	 * @return
	 */
	public static String dateToString(Date date, String type)
	{
		return convertDateToStr(date,type);
	}
	/**
	 * 字符串时间转时间
	 * @param str 时间
	 * @param type 格式
	 * @return
	 */
	public static Date strToDate(String str,String type)
	{
		return convertStrToDate(str,type);
	}
	/**
	 * 时间格式化，由DATE转字符串
	 * @param date 时间
	 * @param type 格式
	 * @return
	 */
	public static String convertDateToStr(Date date, String type)
	  {
	    SimpleDateFormat dateformat = new SimpleDateFormat(type);
	    if (date == null) {
			return "";
		}
	    return dateformat.format(date);
	  }
	/**
	 * 字符串时间转时间
	 * @param date_str 时间
	 * @param type 格式
	 * @return
	 */
	  public static Date convertStrToDate(String date_str, String type)
	  {
	    SimpleDateFormat dateformat = new SimpleDateFormat(type);
	    if ((date_str == null) || ("".equals(date_str))) {
			return null;
		}
	    try {
	      return dateformat.parse(date_str);
	    } catch (Exception e) {
	      ;
	    }
	    return null;
	  }

	/**
	 * 获取周时间，按周日为1开始
	 * @param date
	 * @return
	 */
	public static int getDayForWeek(Date date)
	  {
		  Calendar cal = new GregorianCalendar();
		  cal.setTime(date);
		  int nd = cal.get(Calendar.DAY_OF_WEEK);
		  switch (nd) {
		  case Calendar.SUNDAY: nd = 7;break;
		  case Calendar.MONDAY: nd = 1;break;
		  case Calendar.TUESDAY: nd = 2;break;
		  case Calendar.WEDNESDAY: nd = 3;break;
		  case Calendar.THURSDAY: nd = 4;break;
		  case Calendar.FRIDAY: nd = 5;break;
		  case Calendar.SATURDAY: nd = 6;break;	
		  default:
			break;
		}
		  return nd;
	  }
}
